/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.domain.bo;

import com.comac.ins.common.core.validate.AddGroup;
import com.comac.ins.common.core.validate.EditGroup;
import com.comac.ins.common.mybatis.core.domain.BaseEntity;
import com.comac.ins.isfd.domain.IsfdMeshModelCollect;
import io.github.linpeilie.annotations.AutoMapper;
import io.github.linpeilie.annotations.AutoMappers;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 自然网格模型库-采集业务对象 isfd_mesh_model_collect
 *
 * @author hxloongs
 * @date 2025-01-13
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMappers({
    @AutoMapper(target = IsfdMeshModelCollect.class, reverseConvertGenerate = false),
    @AutoMapper(target = IsfdMeshModelBo.class, reverseConvertGenerate = false)
})
public class IsfdMeshModelCollectBo extends BaseEntity {

    /**
     * 主键
     */
    @NotNull(message = "主键不能为空", groups = {EditGroup.class})
    private Long id;

    /**
     * 父节点
     */
    @NotNull(message = "父节点不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long parentId;

    /**
     * 压缩包id
     */
    @NotNull(message = "压缩包id不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long topParentId;

    /**
     * 上传时刻的时间戳
     */
    @NotNull(message = "上传时刻的时间戳不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long uploadTime;

    /**
     * 文件全名
     */
    private String fullFileName;

    /**
     * 文件名
     */
    @NotBlank(message = "文件名不能为空", groups = {AddGroup.class, EditGroup.class})
    private String fileName;

    /**
     * 文件大小
     */
    @NotNull(message = "文件大小不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long fileSize;

    /**
     * 解析文件类型（compressed/dir/file）
     */
    @NotBlank(message = "解析文件类型（compressed/dir/file）不能为空", groups = {AddGroup.class, EditGroup.class})
    private String fileType;

    /**
     * 文件后缀（rar/zip/bdf/out/dat）
     */
    @NotBlank(message = "文件后缀（rar/zip/bdf/out/dat）不能为空", groups = {AddGroup.class, EditGroup.class})
    private String fileSuffix;

    /**
     * 存储地址
     */
    @NotBlank(message = "存储地址不能为空", groups = {AddGroup.class, EditGroup.class})
    private String fileUrl;

    /**
     * 机型编码
     */
    @NotBlank(message = "机型编码不能为空", groups = {AddGroup.class, EditGroup.class})
    private String modelNumber;

    /**
     * 批次号
     */
    @NotBlank(message = "批次号不能为空", groups = {AddGroup.class, EditGroup.class})
    private String batchNumber;

    /**
     * 部段
     */
    @NotBlank(message = "部段名不能为空", groups = {AddGroup.class, EditGroup.class})
    private String sectionNumber;

    /**
     * 部段名称
     */
    private String sectionName;

    /**
     * 子部段
     */
    @NotBlank(message = "子部段不能为空", groups = {AddGroup.class, EditGroup.class})
    private String childSectionNumber;

    /**
     * 是否通过质量检测,0-通过，1-不通过
     */
    @NotNull(message = "是否通过质量检测,0-通过，1-不通过不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long qualityCheck;

    /**
     * 是否被过滤,默认0没被过滤 0-没被过滤，1-被过滤
     *
     * @see com.comac.ins.isfd.constant.enums.IsfdMeshModelFilteredEnum
     */
    private Integer filtered = 0;
}
